package models.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import models.Jogador;

public class DAOJogador implements DAO<Jogador> {
	
	@Override
    public void inserir(Jogador j) {
        try{
                String inserir = "insert into Jogador(login, senha, nome, email, sexo, pontuacao_total) values(?, ?, ?, ?, ?, 0)";
                PreparedStatement statement = DAOConexao.getConnection().prepareStatement(inserir);
                //Connection connection = DB.getConnection().prepareStatement(inserir);
                
                statement.setString(1, j.login);
                statement.setString(2, j.senha);
                statement.setString(3, j.nome);
                statement.setString(4, j.email);
                statement.setString(5, j.sexo);
                
                statement.executeUpdate();
                
        }catch(SQLException e){
                e.printStackTrace();
                
        }finally{
                DAOConexao.closeConnection();
                //Connection.close();
        }
            
    }

    @Override
    public void atualizar(Jogador j) {
        try{
                String atualizar = "update Jogador set senha = ?, nome = ?, email = ?, sexo = ? where login = ?";
                PreparedStatement statement = DAOConexao.getConnection().prepareStatement(atualizar);
                
                statement.setString(1, j.senha);
                statement.setString(2, j.nome);
                statement.setString(3, j.email);
                statement.setString(4, j.sexo);
                statement.setString(5, j.login);
                
                statement.executeUpdate();
                
        }catch(SQLException e){
                e.printStackTrace();
                
        }finally{
                DAOConexao.closeConnection();
        }

    }

    @Override
    public void deletar(Jogador j) {
        try{
                String deletar = "delete from Jogador where login = ?";
                PreparedStatement statement = DAOConexao.getConnection().prepareStatement(deletar);
                
                statement.setString(1, j.login);
                
                statement.executeUpdate();
                 
        }catch(SQLException e){
                e.printStackTrace();
                
        }finally{
                DAOConexao.closeConnection();
                
        }
            
    }

    @Override
    public List<Jogador> listar() {
	    List<Jogador> jogador = new ArrayList<Jogador>();             
	    
	    try{
	            String listar = "select * from Jogador";
	            PreparedStatement statement = DAOConexao.getConnection().prepareStatement(listar);
	            ResultSet result = statement.executeQuery();
	            
	            while(result.next()){
	                    Jogador j = new Jogador();
	                    
	                    j.login = result.getString(1);
	                    j.senha = result.getString(2);
	                    j.nome = result.getString(3);
	                    j.email = result.getString(4);
	                    j.sexo = result.getString(5);
	                    j.pontuacao_total = result.getInt(6);
	                    
	                    jogador.add(j);
	            }
	            
	    } catch(SQLException e){
	            e.printStackTrace();
	            
	    }finally{
	            DAOConexao.closeConnection();
	    }
	    
	    return jogador;
    }
    
    public List<Jogador> ranking() {
	    List<Jogador> jogador = new ArrayList<Jogador>();             
	    
	    try{
	            String listar = "select * from Jogador order by pontuacao_total desc";
	            PreparedStatement statement = DAOConexao.getConnection().prepareStatement(listar);
	            ResultSet result = statement.executeQuery();
	            
	            while(result.next()){
	                    Jogador j = new Jogador();
	                    
	                    j.login = result.getString(1);
	                    j.senha = result.getString(2);
	                    j.nome = result.getString(3);
	                    j.email = result.getString(4);
	                    j.sexo = result.getString(5);
	                    j.pontuacao_total = result.getInt(6);
	                    
	                    jogador.add(j);
	            }
	            
	    } catch(SQLException e){
	            e.printStackTrace();
	            
	    }finally{
	            DAOConexao.closeConnection();
	    }
	    
	    return jogador;
    }
    
    public List<Jogador> perfil(String nome) {            
    	List<Jogador> jogador = new ArrayList<Jogador>();
    	
    	try{
	            String perfil = "select * from Jogador where login=?";
	            PreparedStatement statement = DAOConexao.getConnection().prepareStatement(perfil);
	            statement.setString(1, nome);
	            ResultSet result = statement.executeQuery();
	            
	            while(result.next()){
                    Jogador j = new Jogador();
                    
	                j.login = result.getString(1);
	                j.senha = result.getString(2);
	                j.nome = result.getString(3);
	                j.email = result.getString(4);
	                j.sexo = result.getString(5);
	                j.pontuacao_total = result.getInt(6);
	                
	                jogador.add(j);
	            }
	            
	    } catch(SQLException e){
	            e.printStackTrace();
	            
	    }finally{
	            DAOConexao.closeConnection();
	    }
	    
	    return jogador;
    }
    
}
